#ifndef C_STRING_H
#define C_STRING_H

typedef struct CStringStruct CString;

CString* CString_New(const char *text);
void CString_Delete(CString *pthis);

void CString_Reserve(CString *pthis, int size);

void CString_Append(CString *pthis, const char *text);
char CString_GetAt(const CString *pthis, int index);
void CString_SetAt(CString *pthis, int index, char ch);
const char* CString_CStr(const CString *pthis);
int CString_Length(const CString *pthis);

CString* CString_Concat(const CString *lhs, const CString *rhs);
void CString_Erase(CString *pthis, int pos, int len);

#endif //C_STRING_H
